#ifndef SCENE_HPP
#define SCENE_HPP
#include "vector.hpp"
#include "object.hpp"
#include "light.hpp"
#include "ray.hpp"
#include "color.hpp"
#include <vector>

class Scene {
public:

	Scene(const Color&,const double);
	Scene(void);
	~Scene(void);

	int nearest_object(Vector&,const Ray&);
	bool object_occlusion(const Ray&,double);
	

	void add_object(Object*);
	void add_light(Light*);
	void set_background(const Color&);
	void set_attenuation(bool);
	void set_attenuation(double,double,double);
	void set_ambient(double);
	
	int get_objectsEnd(void) const;
	int getLightesEnd(void) const;
	Object* get_object(const int) const;
	Light* get_light(const int) const;
	Color get_background(void) const;
	double get_attenuation(const double) const;
	double get_ambient(void) const;

private:
	vector<Object*> objects;
	vector<Light*> lights;
	Color background;
	double ambient;
	bool attenuation;
	double a,b,c; /*Constantes para calculo de atenuacao de distancia*/
};

#endif
